package com.spring.mvc.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.spring.mvc.bean.Cliente;
import com.spring.mvc.dao.ClienteMapper;
import com.spring.mvc.util.Constantes;




@Service
public class ClienteServiceImpl implements ClienteService{
		

	//@Resource(name = "clienteMapper")
	@Autowired
	private ClienteMapper clienteMapper;

	public  Cliente selectByIdCliente(Integer idCliente) throws Exception {
		Cliente cliente=clienteMapper.selectByPrimaryKey(idCliente);
		return cliente;
	}

	public Cliente updatebyIdCliente(Cliente cliente) throws Exception {
		cliente.setFecModifico(new Date());
		clienteMapper.updateByPrimaryKeySelective(cliente);
		cliente=clienteMapper.selectByPrimaryKey(cliente.getIdCliente());
		return cliente;
	}

	public int deleteByIdCliente(Integer idCliente) throws Exception {
		return clienteMapper.deleteByPrimaryKey(idCliente);
	}

	public List<Map<String, Object>> selectAllCliente(String nomCliente, Integer tipoDocumento,String nroDocumento)
			throws Exception {
		Map<String,Object> params=new HashMap<String, Object>();

		if(nomCliente !=null){
			params.put("NOMBRELIKE",'%'+nomCliente+'%');
		}else{
			params.put("NOMBRELIKE",nomCliente);
		}
		params.put("STCLIENTE", Constantes.ESTADO_ACTIVO);
		
		params.put("NRODOCUMENTO", nroDocumento);	
		params.put("TIPODOCUMENTO", tipoDocumento);
		
		List<Map<String, Object>> listaCliente=clienteMapper.selectAllCliente(params);

		return listaCliente;
	}

	public Cliente insertCliente(Cliente cliente) throws Exception {
		
		cliente.setFecRegistro(new Date());
		cliente.setStCliente(Constantes.ESTADO_ACTIVO);
		clienteMapper.insertSelective(cliente);
		return cliente;
	}

	public int selectCountAllCliente(String nomCliente, Integer tipoDocumento,String nroDocumento)
			throws Exception {
		
			Map<String,Object> params=new HashMap<String, Object>();
	
			if(nomCliente !=null){
				params.put("NOMBRELIKE",'%'+nomCliente+'%');
			}else{
				params.put("NOMBRELIKE",nomCliente);
			}
			params.put("STCLIENTE", Constantes.ESTADO_ACTIVO);
			
			params.put("NRODOCUMENTO", nroDocumento);	
			params.put("TIPODOCUMENTO", tipoDocumento);
			Integer count=clienteMapper.selectCountAllCliente(params);
		return count;
	}

	
}
